package col

import (
	"yunj/pkg/yunj/core/builder/builderconsts"
	"yunj/pkg/yunj/core/builder/table"
	"yunj/pkg/yunj/util"
)

// 拖拽排序
type DragSort struct {
	table.Col
	Icon string `json:"icon"`
}

func NewDragSort(field string, title ...string) *DragSort {
	c := &DragSort{}
	// 设置默认值
	c.Type = builderconsts.TABLE_COL_TYPE_NORMAL

	table.SetColInstance(&c.Col, c)
	c.SetColField(field)
	if len(title) > 0 {
		c.SetTitle(title[0])
	}
	return c
}

// 创建一个图标拖拽列
func NewDragSortIcon(title ...string) *DragSort {
	titleValue := "排序"
	if len(title) > 0 {
		titleValue = title[0]
	}
	c := NewDragSort("__YUNJ_DRAG_SORT__", titleValue)
	c.SetIcon("yunj-icon-sort-circle")
	return c
}

// 设置标题
func (c *DragSort) SetTitle(title string) *DragSort {
	c.Title = title
	return c
}

// 设置排列方式
func (c *DragSort) SetAlign(align string) *DragSort {
	c.Align = align
	return c
}

// 设置是否开启列的排序功能
func (c *DragSort) SetSort(yes bool) *DragSort {
	c.Sort = yes
	return c
}

// 设置固定列
func (c *DragSort) SetFixed(fixed string) *DragSort {
	c.Fixed = fixed
	return c
}

// 设置隐藏列
func (c *DragSort) SetHide(hide string) *DragSort {
	c.Hide = hide
	return c
}

// 设置宽度
func (c *DragSort) SetWidth(width any) *DragSort {
	c.Width = width
	return c
}

// 设置最小宽度
func (c *DragSort) SetMinWidth(minWidth uint64) *DragSort {
	c.MinWidth = minWidth
	return c
}

// 设置最大宽度
func (c *DragSort) SetMaxWidth(maxWidth uint64) *DragSort {
	c.MaxWidth = maxWidth
	return c
}

// 设置权限
func (c *DragSort) SetAuth(auth string) *DragSort {
	c.Auth = auth
	return c
}

// 设置权限
func (c *DragSort) SetIcon(icon string) *DragSort {
	c.Icon = icon
	return c
}

// 处理属性
func (c *DragSort) HandleAttr() error {
	if c.Align == "" {
		c.Align = builderconsts.ALIGN_CENTER
	}
	if c.Icon == "" {
		c.Icon = "yunj-icon-sort-circle"
	}
	c.Icon = util.IconClass(c.Icon)
	return nil
}
